package com.slj.uitil;

import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

@Component
public class FileUtil {

    // 上传目录（根据实际情况修改）
    private static final String UPLOAD_DIR = "D:\\cods\\ssm\\ShenSSM\\src\\main\\webapp\\static\\img";

    /**
            * 保存文件到指定目录（保留原始文件名）
            * @param file 上传的文件
     * @return 文件存储路径
     * @throws IOException 如果保存失败
     */
    public String saveFile(MultipartFile file) throws IOException {
        // 1. 检查文件是否为空
        if (file == null || file.isEmpty()) {
            throw new IllegalArgumentException("上传文件不能为空");
        }

        // 2. 获取原始文件名
        String originalFilename = file.getOriginalFilename();
        if (originalFilename == null || originalFilename.isEmpty()) {
            throw new IllegalArgumentException("文件名无效");
        }

        // 3. 创建上传目录（如果不存在）
        Path uploadPath = Paths.get(UPLOAD_DIR);
        if (!Files.exists(uploadPath)) {
            Files.createDirectories(uploadPath);
        }

        // 4. 构建目标文件路径
        Path filePath = uploadPath.resolve(originalFilename);

        // 5. 保存文件（直接使用文件流，不生成临时文件）
        Files.copy(file.getInputStream(), filePath, StandardCopyOption.REPLACE_EXISTING);

        // 6. 返回文件存储路径
        return filePath.toString();
    }
}